package com.leetcode.easy;

import com.leetcode.entity.ListNode;

/**
 * @Classname SolutionDeleteDuplicates
 * @Description 删除排序链表中的重复元素
 * @Date 2020/8/25 16:38
 * @Created by zfl
 */
public class SolutionDeleteDuplicates {
    /*
    *@Description 删除排序链表中的重复元素
    *@param [head]
    *@return com.leetcode.entity.ListNode
    * 执行用时：1 ms, 在所有 Java 提交中击败了73.77%的用户
    * 内存消耗：39.5 MB, 在所有 Java 提交中击败了31.79%的用户
    */
    public ListNode deleteDuplicates1(ListNode head) {
        if(head == null || head.next == null) return head;
        ListNode p1 = head;
        ListNode p2 = head.next;
        while (p2 != null) {
            while (p1.val == p2.val && p2.next != null) {
                p2 = p2.next;
            }
            if(p1.val != p2.val) {
                p1.next = p2;
                p1 = p1.next;
            }
            if(p2.next == null) {
                p1.next = null;
            }
            p2 = p2.next;
        }
        return head;
    }
    /*
    *@Description 直接发
    *@param [head]
    *@return com.leetcode.entity.ListNode
    * 执行用时：1 ms, 在所有 Java 提交中击败了73.77%的用户
    * 内存消耗：39.3 MB, 在所有 Java 提交中击败了83.30%的用户
    */
    public ListNode deleteDuplicates2(ListNode head) {
        ListNode cur = head;
        while (cur != null && cur.next != null) {
            if(cur.val == cur.next.val) {
                cur.next = cur.next.next;
            }else {
                cur = cur.next;
            }
        }
        return head;
    }
}
